package com.qfjy.homework.linzhengchao;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/**
 * @author:lzc date:2022/6/29/0029 19:08
 * @version:1.0
 */
public class Subject {
    /**
     * 频繁增删的，用于存储观察者的链表
     */
    private List<Observer> observers = new LinkedList<>();


    /**
     * 被观察者的状态
     */
    private Integer state;

    /**
     * state   set  方法+触发通知
     * @return
     */
  public void setState(Integer state) {
        this.state = state;
        notifyAllObservers();//state被修改后通知所有观察者
    }


    /**
     *这个getState本来想在观察者执行时打印出state的，但是代码要改一圈，不想改了，就留了一个没用的get
     * @return
     */

    public Integer getState() {
        return state;
    }

    /**
     * 添加观察者
     */
    public void attach(Observer observer){
        observers.add(observer);
    }
    /**
     * 对表中所有对象发出提醒
     */
    public void notifyAllObservers(){
        for (Observer observer : observers) {
            observer.update();//遍历每个观察者，挨个执行更新
        }
    }
}
